为您找到与数据库in和exists的用法 计算机英语相关的共200个结果:
数据库in和exists的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in和exists的用法的用法,希望对你们有用。
SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC)
NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度
select DISTINCT MD001 from BOMMD WHERE NOT EXISTS (SELECT MC001 FROM BOMMC where BOMMC.MC001 = BOMMD.MD001)
exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
例子如下(即exists返回where后2个比较的where子句中相同值,not exists则返回where子句中不同值):
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是一对多的关系 A.ID --> B.AID
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 1)
-->SELECT * FROM B WHERE B.AID = 1有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 2)
-->SELECT * FROM B WHERE B.AID = 2有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 3)
-->SELECT * FROM B WHERE B.AID = 3无值返回真所以没有数据
NOT EXISTS 就是反过来
SELECT ID , NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
3 A3
sql in与exists区别
IN
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。
USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO
-- Or, using the IN clause:
USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO
下面是任一查询的结果集:
pub_name
----------------------------------------
Algodata Infosystems
New Moon Books
(2 row(s) affected)
exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合.例如 exist P 表示P不空时为真; not exist P表示p为空时 为真 in表示一个标量和一元关系的关系。例如:s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全文:
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的
2:
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
浏览量:2
下载量:0
时间:
数据库中exists语句的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中exists语句的用法的用法,希望对你们有用。
SQL中EXISTS的用法
问题:查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
--方法1
Sql代码
select Student.* from Student , SC where Student.S# = SC.S# and SC.C# = '01' and exists (Select 1 from SC SC_2 where SC_2.S# = SC.S# and SC_2.C# = '02') order by Student.S#
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
例表A:TableIn
例表B:TableEx
(二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME in(select BNAME from TableEx)
(三). 比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME=ANY(select BNAME from TableEx)
NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。
一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。
EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
浏览量:3
下载量:0
时间:
数据库in的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。
MySQL IN 语法
IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。
IN 使用实例
选取 uid 为 2、3、5 的用户数据:
SELECT * FROM user WHERE uid IN (2,3,5)
返回查询结果如下:
uid
username
password
regdate
2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917
3 Jack 0193686a35e4de85ee3f2ff0567adf490 jack@gmail.com 1278061380
5 5idev a193686a53e4de85ee3f2ff0576adf01 5idev@5idev.com 1291107029
IN 子查询
更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0 的用户:
SELECT uid FROM user WHERE status=0
然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。
IN 运算符补充说明
IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。
关于 IN 运算符的效率问题
如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:
SELECT * FROM user WHERE uid IN (2,3,5)
https:// 等效为:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般认为,如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。
浏览量:3
下载量:0
时间:
数据库having的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库having的用法的用法,希望对你们有用。
--sql中的group by 用法解析:
-- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。
--它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
--注意:group by 是先排序后分组;
--举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术
select DepartmentID as '部门名称',
COUNT(*) as '个数' from BasicDepartment group by DepartmentID
--这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID
--DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少;
--如果不用count(*) 而用类似下面的语法
select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID
--将会出现错误
--消息 8120,级别 16,状态 1,第 1 行
--选择列表中的列 'BasicDepartment.DepartmentName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
--这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,
--作为分组的依据;要么就要被包含在聚合函数中。
--出现的错误详解:咱们看看group by 的执行的过程,先执行select 的操作返回一个程序集,
--然后去执行分组的操作,这时候他将根据group by 后面的字段
--进行分组,并且将相同的字段并称一列数据,如果group by 后面没有这个字段的话就要分成好多的数据。
--但是分组就只能将相同的数据分成两列数据,而一列中又只能放入一个字段,所以那些没有进行分组的
--数据系统不知道将数据放入哪里,所以就出现此错误
--目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,
--所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的
--数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了
--group by all语法解析:
--如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。
--没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。
select DepartmentID,DepartmentName as '部门名称',
COUNT(*) as '个数' from BasicDepartment group by all DepartmentID,DepartmentName
--group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数,
--例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
--WHERE关键字在使用集合函数时不能使用,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。
create TABLE Table1
(
ID int identity(1,1) primary key NOT NULL,
classid int,
sex varchar(10),
age int,
)
--添加测试数据
Insert into Table1 values(1,'男',20)
Insert into Table1 values(2,'女',22)
Insert into Table1 values(3,'男',23)
Insert into Table1 values(4,'男',22)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(2,'女',19)
Insert into Table1 values(4,'男',26)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(1,'男',20)
Insert into Table1 values(2,'女',22)
Insert into Table1 values(3,'男',23)
Insert into Table1 values(4,'男',22)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(2,'女',19
--举例子说明:查询table表查询每一个班级中年龄大于20,性别为男的人数
select COUNT(*)as '>20岁人数',classid from Table1 where sex='男' group by classid,age having age>20
--需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
--having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
浏览量:2
下载量:0
时间:
数据库中in的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中in的用法的用法,希望对你们有用。
IN:确定给定的值是否与子查询或列表中的值相匹配。
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERECategoryID IN (1, 4, 5)
IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
NOT IN:通过 NOT IN关键字引入的子查询也返回一列零值或更多值。
以下查询查找没有出版过商业书籍的出版商的名称。
SELECTpub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHEREtype = 'business')
使用 EXISTS和 NOT EXISTS引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。
差集包含只属于两个集合中的第一个集合的元素。
EXISTS:指定一个子查询,检测行的存在。
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT *FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECTdistinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titlesWHERE type = 'business')
两者的区别:
EXISTS:后面可以是整句的查询语句如:SELECT *FROM titles
IN:后面只能是对单列:SELECTpub_id FROM titles
NOT EXISTS:
例如,要查找不出版商业书籍的出版商的名称:
SELECTpub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id =publishers.pub_id AND type =
'business')
下面的查询查找已经不销售的书的名称:
SELECT titleFROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id =titles.title_id)
例子:
https://验证有发布产品的公司个数
select id,name from company where exists (select * from product where comid=company.id)
select id,name from company where id in(select comid from product)
https://验证没有发布产品的公司个数
select id,name from company where not exists (select * from product where comid=company.id)
select id,name from company where id not in(select comid from product)
浏览量:2
下载量:0
时间:
数据库查询distinct的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库查询distinct的用法的用法,希望对你们有用。
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。
表A:
表B:
1.作用于单列
select distinct name from A
执行后结果如下:
2.作用于多列
示例2.1
select distinct name, id from A
执行后结果如下:
实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。
示例2.2
select distinct xing, ming from B
返回如下结果:
返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。
3.COUNT统计
select count(distinct name) from A; --表中name去重后的数目, SQL Server支持,而Access不支持
count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。
select count(distinct name, id) from A;
若想使用,请使用嵌套查询,如下:
select count(*) from (select distinct xing, name from B) AS M;
4.distinct必须放在开头
select id, distinct name from A; --会提示错误,因为distinct必须放在开头
5.其他
distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论
浏览量:2
下载量:0
时间:
数据库中join的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中join的用法的用法,希望对你们有用。
一、join的用法
内连接、外连接
示例用表:
雇员表(Employee)
LastNameDepartmentID
Rafferty31
Jones33
Steinberg33
Robinson34
Smith34
JasperNULL
部门表(Department)
DepartmentID部门
31销售部
33工程部
34书记
35市场部
1、内连接:相等连接、自然连接、交叉连接
1)、显式的内连接与隐式连接(inner join == join )
显示连接:SELECT * from employee join department on employee.DepartmentID = department.DepartmentID
等价于:
隐式连接:SELECT * from employee,department WHERE employee.DepartmentID = department.DepartmentID
注:当DepartmentID不匹配,就不会往结果表中生成任何数据。
2)、相等连接
提供了一种可选的简短符号去表达相等连接,它使用 USING 关键字。
SELECT * from employee join department using (DepartmentID)
注:与显式连接不同在于:DepartmentID只显示一列
3)、自然连接
比相等连接的进一步特例化。两表做自然连接时,两表中的所有名称相同的列都将被比较,这是隐式的。
自然连接得到的结果表中,两表中名称相同的列只出现一次.
select * from employee natural join department
注:在 Oracle 里用 JOIN USING 或 NATURAL JOIN 时,如果两表共有的列的名称前加上某表名作为前缀,
则会报编译错误: "ORA-25154: column part of USING clause cannot have qualifier"
或 "ORA-25155: column used in NATURAL join cannot have qualifier".
4)交叉连接(又称笛卡尔连接)
如果 A 和 B 是两个集合,它们的交叉连接就记为: A × B.
显示连接:
select * from employee cross join department
等价于
隐式连接:
select * from employee,department
2、外连接
并不要求连接的两表的每一条记录在对方表中都一条匹配的记录。
1)左连接(left outer join == left join)
若A表与B表左连接,A表对就的B表没有匹配,连接操作也会返回一条记录,对应值为NULL。
如:
Jaspernull null null
Jones3333工程部
Rafferty3131销售部
Robinson3434书记
Smith3434书记
Steinberg3333工程部
若A表对应B表中有多行,则左表会复制和右表匹配行一样的数量,并组合生成连接结果。
如:select * from department left join employee on employee.departmentId = department.departmentId
31销售部Rafferty31
33工程部Jones33
33工程部Steinberg33
34书记Robinson34
34书记Smith34
35市场部nullnull
2)、右连接(right outer join == right join)
与左连接同(略)
3)、全连接(full outer join ==full join)
是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 即以 NULL 填充。
select * from employee full outer join department on employee.departmentId = department.departmentId
注:一些数据库系统(如 MySQL)并不直接支持全连接, 但它们可以通过左右外连接的并集(参: union)来模拟实现.
和上面等价的实例:
select * from employee left join department on employee.departmentId = department.departmentId
union all
select * from employee right join department on employee.departmentId = department.departmentId
注:SQLite 不支持右连接。
浏览量:2
下载量:0
时间:
计算机数据库作为数据信息的存储系统,其安全性是非常重要的。接下来小编为大家整理计算机数据库英语名词解释,希望对你有帮助哦!
AGP(Accelerated Graphics Port) -图形加速接口
Access Time-存取时间
Address-地址
ANSI (American National Standards Institute) 美国国家标准协会
ASCII (American Standard Code for Information Interchange)
Async SRAM-异步静态内存
BSB (Backside Bus)
Bandwidth-带宽
Bank -内存库
Bank Schema -存储体规划
Base Rambus -初级的Rambus内存
Baud -波特
BGA (Ball Grid Array)-球状引脚栅格阵列封装技术
Binary -二进制
BIOS (Basic Input-Output System) -基本输入/输出系统
Bit-位、比特
BLP-底部引出塑封技术
Buffer-缓冲区
Buffered Memory-带缓冲的内存
BEDO (Burst EDO RAM) -突发模式EDO随机存储器
Burst Mode-突发模式
Bus-总线
Bus Cycle-总线周期
Byte-字节
Cacheability-高速缓存能力
Cache Memory-高速缓存存储器
CAS (Column Address Strobe)-列地址选通脉冲
CL(CAS Latency )-列地址选通脉冲时间延迟
CDRAM (Cache DRAM)-快取动态随机存储器
Checksum-检验和,校验和
Chipset-芯片组
Chip-Scale Package (CSP)-芯片级封装
Compact Flash-紧凑式闪存
Concurrent Rambus-并发式总线式内存
Continuity RIMM (C-RIMM)-连续性总线式内存模组
CMOS(Complementary Metal-Oxide-Semicomductor)-互补金属氧化物半导体用于晶体管
CPU (Central Processing Unit)-中央处理单元
Credit Card Memory -信用卡内存
DDR(Double Data Rate SDRAM)- 双数据输出同步动态存储器。
Desktop--台式机,桌上型电脑
Die--模子,芯片颗粒
DIME (Direct Memory Execution)
DIMM(Dual-In line Memory Module)-双边接触内存模组
Direct Rambus-直接总线式随机存储器
DIP (Dual In-line Package)-双列直插式封装,双入线封装
Direct RDRAM-直接总线式动态随机存储器
DMA (Direct Memory Access)-直接内存存取
DRAM (Dynamic Random-Access Memory)-动态随机存储器
Dual Independent Bus (DI-双重独立总线
ECC(Error Correcting Code)-错误更正码,纠错码
FPM DRAM (Fast Page Mode DRAM):快速翻页动态存储器。
EDO DRAM(Extended Data Out DRAM):扩展数据输出动态存储器.
SDRAM(Synchronous DRAM):同步动态存储器。
RDRAM(Rambus DRAM):总线式动态随机存储器。
DDR:(Double Data Rate SDRAM): 双数据输出同步动态存储器。
parity:奇偶校验。
ECC:(Error Correcting Code) 错误更正码。
Simm(Single-In line Memory Module)即单边接触内存模组。
SPD(Serial Presence Detect):
refresh:刷新率
Flash Memory:闪烁存储器。
SRAM:(Static DRAM )静态内存。
PCMCIA:(Personal Computer Memory Card International Association标准的卡式扩充接口
JEDEC:(Joint Electron Device Engineering Council ) 电子元件工业联合会
RAM:Random Access Memory,随机存储器,即人们常说的“内存”。
ROM:Read-Only Memory,只读存储器。
EDO:Extended Data Output,扩充数据输出
SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器
Cache:英文含义为“(勘探人员等贮藏粮食、器材等的)地窖
CMOS:是Complementary Metal Oxide Semiconductor互补金属氧化物半导体
PCI:Peripheral Component Interconnection,局部总线
Seagate:美国希捷硬盘生产商
Quantum:英文含意为“定量,总量”。美国昆腾硬盘生产商(Quantum Corporation)。
Maxtor:“水晶”,美国Maxtor硬盘公司。
LD:Laser Disk,镭射光盘,又称激光视盘。
CD:Compact Disc,压缩光盘,又称激光唱盘。
CD-ROM:Compact Disc-Read Only Memory,压缩光盘-只读记忆(存储),又叫“只读光
VCD:Video Compact Disc,视频压缩光盘,即人们通常所说的“小影碟”。
DVD: Digital Versatile Disc的英文缩写
TFT:有源矩阵彩色显示器,简称TFT显示器,专用于笔记本电脑
Databuffer(数据缓冲器
Datacompression(数据压缩
DCE:"Datacommunicationequipment(数据通信设备
DTE:"Dataterminalequipment(数据终端设备
Errorcorrection(差错控制
Filetransferprotocol(文件转换协议
Flowcontrol(数据流控制
activate(激活)
Active client(活动客户)
Active document(活动文档)
Active Group,The
Active platform(活动平台)
Active server(活动服务器) Active Server Page (ASP)
apartment model multi-threading(套间模式多线程)
apartment threaded(套间线程化)
Application Programming Interface (API——应用程序编程接口)
Applet(小应用程序)
asynchronous call(异步调用)
Asynchronous Transfer Mode(ATM——异步传输模式)
bandwidth(带宽)
bind(捆绑)
bytecode(字节代码)
cache(高速缓存)
call(调用)
Certificate Authority(认证)
class identifier(类标识符)
class library(类库)
class object(类对象)
Component Object Model(COM——组件对象模型)
Common Gateway Interface(CGI——通用网关接口)
communications protocol(通信协议)
compound document(复合文档)
Computer Aided Software Engineering(CASE——计算机辅助软件工程)
container application(包容器应用程序)
context object(上下文对象)
control(控件)
浏览量:2
下载量:0
时间:
数据库中exists的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中exists的用法的用法,希望对你们有用。
exists : 强调的是是否返回结果集,不要求知道返回什么, 比如:
select name from student where sex = 'm' and mark exists(select 1 from grade where ...) ,只要
exists引导的子句有结果集返回,那么exists这个条件就算成立了,大家注意返回的字段始终为1,如果改成“select 2 from grade where ...”,那么返回的字段就是2,这个数字没有意义。所以exists子句不在乎返回什么,而是在乎是不是有结果集返回。
而 exists 与 in 最大的区别在于 in引导的子句只能返回一个字段,比如:
select name from student where sex = 'm' and mark in (select 1,2,3 from grade where ...)
,in子句返回了三个字段,这是不正确的,exists子句是允许的,但in只允许有一个字段返回,在1,2,3中随便去了两个字段即可。
而not exists 和not in 分别是exists 和 in 的 对立面。
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
下面详细描述not exists的过程:
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是1对多的关系 A.ID => B.AID
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1)
--->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2)
--->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据
SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3)
--->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据
NOT EXISTS 就是反过来
SELECT ID,NAME FROM A WHERENOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)
执行结果为
3 A3
===========================================================================
EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因
SELECT ID,NAME FROM A WHEREID IN (SELECT AID FROM B)
NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别
SELECT ID,NAME FROM A WHEREIDNOT IN (SELECT AID FROM B)
有时候我们会遇到要选出某一列不重复,某一列作为选择条件,其他列正常输出的情况.
如下面的表table:
Id Name Class Count Date
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果想要得到下面的结果:(Id唯一,Date选最近的一次)
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
正确的SQL语句是:
SELECT Id, Name, Class, Count, Date
FROM table t
WHERE (NOT EXISTS
(SELECT Id, Name, Class, Count, Date FROM table
WHERE Id = t.Id AND Date > t.Date))
如果用distinct,得不到这个结果, 因为distinct是作用与所有列的
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
结果是表table的所有不同列都显示出来,如下所示:
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果用Group by也得不到需要的结果,因为Group by 要和聚合函数共同使用,所以对于Name,Class和Count列要么使用Group by,要么使用聚合函数. 如果写成
SELECT Id, Name, Class, Count, MAX(Date)
FROM table
GROUP BY Id, Name, Class, Count
得到的结果是
1 苹果 水果 10 2011-7-1
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 白菜 蔬菜 12 2011-7-1
2 青菜 蔬菜 19 2011-7-2
如果写成
SELECT Id, MAX(Name), MAX(Class), MAX(Count), MAX(Date)
FROM table
GROUP BY Id
得到的结果是:
1 香蕉 水果 20 2011-7-3
2 青菜 蔬菜 19 2011-7-2
如果用in有时候也得不到结果,(有的时候可以得到,如果Date都不相同(没有重复数据),或者是下面得到的Max(Date)只有一个值)
SELECT DISTINCT Id, Name, Class, Count, Date FROM table
WHERE (Date IN
(SELECT MAX(Date)
FROM table
GROUP BY Id))
得到的结果是:(因为MAX(Date)有两个值2011-7-2,2011-7-3)
1 桔子 水果 20 2011-7-2
1 香蕉 水果 15 2011-7-3
2 青菜 蔬菜 19 2011-7-2
注意in只允许有一个字段返回
有一种方法可以实现:
SELECT Id, Name, Class, COUNT, Date
FROM table1 t
WHERE (Date =
(SELECT MAX(Date)
FROM table1
WHERE Id = t .Id))
浏览量:2
下载量:0
时间:
数据库查询exists的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库查询exists的用法的用法,希望对你们有用。
有一个查询如下:
复制代码 代码如下:
SELECT c.CustomerId, CompanyName
FROM Customers c
WHERE EXISTS(
SELECT OrderID FROM Orders o
WHERE o.CustomerID = cu.CustomerID)
这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。
EXISTS 指定一个子查询,检测行的存在。语法:EXISTS subquery。参数 subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。结果类型为 Boolean,如果子查询包含行,则返回 TRUE。
在子查询中使用 NULL 仍然返回结果集
这个例子在子查询中指定 NULL,并返回结果集,通过使用 EXISTS 仍取值为 TRUE。
复制代码 代码如下:
SELECT CategoryName
FROM Categories
WHERE EXISTS (SELECT NULL)
ORDER BY CategoryName ASC
比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。
复制代码 代码如下:
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
复制代码 代码如下:
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
比较使用 EXISTS 和 = ANY 的查询
本示例显示查找与出版商住在同一城市中的作者的两种查询方法:第一种方法使用 = ANY,第二种方法使用 EXISTS。注意这两种方法返回相同的信息。
复制代码 代码如下:
SELECT au_lname, au_fname
FROM authors
WHERE exists
(SELECT *
FROM publishers
WHERE authors.city = publishers.city)
复制代码 代码如下:
SELECT au_lname, au_fname
FROM authors
WHERE city = ANY
(SELECT city
FROM publishers)
比较使用 EXISTS 和 IN 的查询
本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:
复制代码 代码如下:
SELECT title
FROM titles
WHERE EXISTS
(SELECT *
FROM publishers
WHERE pub_id = titles.pub_id
AND city LIKE 'B%')
复制代码 代码如下:
SELECT title
FROM titles
WHERE pub_id IN
(SELECT pub_id
FROM publishers
WHERE city LIKE 'B%')
使用 NOT EXISTS
NOT EXISTS 的作用与 EXISTS 正相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。本示例查找不出版商业书籍的出版商的名称:
复制代码 代码如下:
SELECT pub_name
FROM publishers
WHERE NOT EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
ORDER BY pub_name
又比如以下 SQL 语句:
复制代码 代码如下:
select distinct 姓名 from xs
where not exists (
select * from kc
where not exists (
select * from xs_kc
where 学号=xs.学号 and 课程号=kc.课程号
)
把最外层的查询xs里的数据一行一行的做里层的子查询。
中间的 exists 语句只做出对上一层的返回 true 或 false,因为查询的条件都在 where 学号=xs.学号 and 课程号=kc.课程号这句话里。每一个 exists 都会有一行值。它只是告诉一层,最外层的查询条件在这里成立或都不成立,返回的时候值也一样回返回上去。直到最高层的时候如果是 true(真)就返回到结果集。为 false(假)丢弃。
复制代码 代码如下:
where not exists
select * from xs_kc
where 学号=xs.学号 and 课程号=kc.课程号
这个 exists 就是告诉上一层,这一行语句在我这里不成立。因为他不是最高层,所以还要继续向上返回。
select distinct 姓名 from xs where not exists (这里的 exists 语句收到上一个为 false 的值。他在判断一下,结果就是为 true(成立),由于是最高层所以就会把这行的结果(这里指的是查询条件)返回到结果集。
浏览量:2
下载量:0
时间:
数据库join的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库join的用法的用法,希望对你们有用。
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a , b
WHERE a.symbol = b.symbol
上面的代码用WHERE关键词指明了两个表之间的联合关系。
如果改写为JOIN关键字,那么代码如下:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM securitycode a
JOIN dayquote b
ON a.symbol = b.symbol
现在对JOIN的用法应该有个大概了解了,JOIN的具体用法和语法介绍如下:
先假设有表a、b如下:
表a 表b
---------------------- --------------------------------
| symbol | sname | | symbol | tdate | tclose |
-------------------------- -------------------------------------
| A | B | | A | C | D |
| G | H | | X | E | F |
-------------------------- ------------------------------------
内联接:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a
INNER JOIN b
ON a.symbol = b.symbol
其中INNER关键字可以省略。
此语句只有在表a和b中都有匹配行时,才返回。
所以本例中返回结果为:
symbol sname tdate tclose
A B C D --这一行即满足a.symbol = b.symbol
外联接:
SELECT a.symbol , a.sname , b.tdate , b.tclose
FROM a
RIGHT | LEFT | FULL OUTER JOIN b
ON a.symbol = b.symbol
其中OUTER关键词可以省略。
RIGHT JOIN:当右表格(即表b)中的行在左表中没有匹配行时,也返回。返回的记录中,选择的左表的列的内容为NULL。
所以本例中返回结果为:
symbol sname tdate tclose
A B C D --这一行即满足a.symbol = b.symbol
null null E F --这一行里,对应的b.symbol没有在表a中找到相同的a.symbol
LEFT JOIN:当左表格(即表a)中的行在右表中没有匹配行时,也返回。返回的记录中,选择的右表的列的内容为NULL。
所以本例中返回结果为:
symbol sname tdate tclose
A B C D --这一行即满足a.symbol = b.symbol
G H null null --这一行里,对应的a.symbol没有在表b中找到相同的b.symbol
FULL JOIN:可以把它理解为LFET和RIGHT的集合,某表中某一行在另一表中无匹配行,则相应列的内容为NULL。
所以本例中返回结果为:
symbol sname tdate tclose
A B C D --这一行即满足a.symbol = b.symbol
G H null null --这一行里,对应的a.symbol没有在表b中找到相同的b.symbol
null null E F --这一行里,对应的b.symbol没有在表a中找到相同的a.symbol
A B C D --这一行即满足a.symbol = b.symbol
交叉联接:
SELECT a.*,b.*
FROM a
CROSS JOIN b
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
也就是相当于两个表中的所有行进行排列组合。
若表a有X行,表b有Y行,则将返回XY行记录。
所以本例中返回结果为:
symbol sname tdate tclose
A B C D
G H C D
A B E F
G H E F
浏览量:3
下载量:0
时间:
数据库中using的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中using的用法的用法,希望对你们有用。
使用using关键字对连接进行简化
在SQL/92标准可以使用USING子句对连接条件进行简化,但是只有在查询满足以下两个条件时才能给使用USING进行简化:
1、查询必须是等连接的
2、等连接中的列必须是同名
如:商品表goods表和商品类型表category表中goods的外键和category的主键相同:categoryid而且是等连接,这里可以使用using
[sql]
select goodsname,categoryname
from goods inner join category
using(categoryid)
在使用using是需要注意以下几个问题
1、在select子句中只能指定该列名,不能使用表名或别名
2、在using子句中也只能单独使用列名
对于多与两个表的连接,先看这个例子
[sql]
select c.firstName,c.lastName,p.product_name ,pt.product_types_name
from customers c,purchase pr,products p,product_types pt
where c.customer_id=pr.customer_id www.2cto.com
and p.products_id = pr.products_id
and p.product_types_id=pt.product_types_id;
使用using对上面的sql语句进行重写
[sql]
select c.first_name,c.last_name,p.products_name as product,pt.product_types_name as typesname
from customers c inner join purchases pr
using(customers_id)
inner join products p
using(products_id)
inner join product_types pt
using(product_types_id);
浏览量:3
下载量:0
时间:
计算机英语的特点:计算机英语与其他专业英语的最大区别就在于它的“日新月异”,特点也不少:客观、严谨、准确、精练,专业术语多,缩略语经常出现,合成的新词多,介词短语、分词短语和名词性词组使用频繁,长句、祈使句和被动语态使用较多,方程与数字占有一定比列。下面是读文网小编整理的计算机专业英语学习文章, 希望对大家有帮助。
It's important to understand that any time anAccess client disconnects unexpectedly, it mayset a "corruption flag" in the .mdb file indicatingthat the database is in a corrupt state (regardlessof whether any data has actually been corruptedor not). Any user who attempts to open thedatabase while this flag is set will receive amessage, and the database will have to berepaired before it can be used. If the users don'thave permission to perform the repair, or don'tknow how to perform the repair, there may be significant downtime before the database is availableagain. This can result in a loss of productivity as well as extreme frustration for the users. Followingthe 5 tips below will minimize your odds of data loss from corruption in your Access databases.
Remember that the corruption flag can be set from the slightest packet loss between your computerand the database file. MS Access has sometimes been called "the canary in the coal mine". It hasgained this reputation from being the first application to "die" when there's the slightest hint oftrouble on your network. Just like the slightest presence of gas caused the canary to die, the slightestpresence of network problems and packet loss can kill your Access applications. Make sure you'renot using the cheap built-in NICs that come with some PCs. Instead, use brand name network cards.The same goes for cheap hubs. Whenever possible, match good brands of equipment throughoutyour network.
浏览量:2
下载量:0
时间:
小编给大家整理了英语词组 doing/to do 的固定用法,希望对大家的英语学习有帮助。
感官动词 see, watch, observe, notice, look at, hear, listen to, smell, taste, feel + do 表示动作的完整性,真实性;
+doing 表示动作的连续性,进行性
I saw him work in the garden yesterday.
昨天我看见他在花园里干活了。(强调"我看见了"这个事实)
I saw him working in the garden yesterday.(强调"我见他正干活"这个动作)
昨天我见他正在花园里干活。
1)They knew her very well. They had seen her ___ up from childhood.
A. grow B. grew C. was growing D. to grow
答案:A。
因题意为,他们看着她长大,因此强调的是成长的过程,而非正在长的动作,因此用see sb do sth 的句型。
2)The missing boy was last seen ___ near the river.
A. playing B. to be playingC. playD. to play
答案A. 本题强调其动作,正在河边玩,应此用see sb. doing sth句型。
浏览量:3
下载量:0
时间:
下面是读文网小编归纳的一些关于介词in重要用法,欢迎大家阅读!
英语介词in重要用法归纳:
介词 in 用法比较复杂,以下几点比较重要,须引起注意:
He learnt English in three weeks. 他在3周内学会了英语。
The train will arrive in a few minutes. 火车过几分钟就到。
但语言的实际并不完全是这样,有时需视具体的上下文或语境来确定。如:
We should be able to complete the work in five days. 我们应该能在5天内完成这工作。
为了明确语义,有时人们就分别用 within 和 after 来表示“在……内”和“在……后”:
I’ll see you again within three days. 3天内我再来看你。
I’ll see you again after three days. 3天后我再来看你。
浏览量:2
下载量:0
时间: